package com.irdstudio.efp.esb.api.bean.dxm;

import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.irdstudio.basic.framework.core.annotation.BeanMapKey;
import com.irdstudio.basic.framework.core.annotation.DicType;
import com.irdstudio.basic.framework.core.annotation.NumType;
import com.irdstudio.basic.framework.core.constant.PrdInfoConstant;
import com.irdstudio.efp.esb.common.constant.dxm.AdjustMode;
import com.irdstudio.efp.esb.common.constant.dxm.BdAdjustType;
import com.irdstudio.efp.esb.common.constant.dxm.BdBlackListType;
import com.irdstudio.efp.esb.common.constant.dxm.BdPreaCustSeg;
import com.irdstudio.efp.esb.common.constant.dxm.ChannelNo;
import com.irdstudio.efp.esb.common.constant.dxm.Education;
import com.irdstudio.efp.esb.common.constant.dxm.LoanReasonCode;

/**
  * 额度调整申请服务接口请求实体类
  * @author  qiuyf
  * @since 2019年3月7日 下午2:23:31
  * @version 1.0
 */
@JsonPropertyOrder(alphabetic = true)
public class ReqLoanAdjustLimitBean {

	
	@BeanMapKey("BaiduSnId")
	@JsonProperty("BaiduSnId")
	@NotNull
	@NotEmpty
	@Length(max = 64)
	private String BaiduSnId;	//百度会话id
	
	@BeanMapKey("CrdtAppFlowNo")
	@JsonProperty("CrdtAppFlowNo")
	@Length(max = 64)
	private String CrdtAppFlowNo;	//授信申请流水号
	
	@BeanMapKey("RepeatRqsBss")
	@JsonProperty("RepeatRqsBss")
	@NotNull
	@NotEmpty
	@Length(max = 64)
	private String RepeatRqsBss;	//重复请求依据 （请求方需要保证永远唯一，响应方据此判断是否重复请求）
	
	@BeanMapKey("VerNo")
	@JsonProperty("VerNo")
	@NotNull
	@NotEmpty
	@NumType
	@Length(max = 32)
	private String VerNo;	//版本号
	
	@BeanMapKey("AdvType")
	@JsonProperty("AdvType")
	@NotNull
	@NotEmpty
	@Length(max = 64)
	private String AdvType;	//通知类型

	@BeanMapKey("ChanFlg")
	@JsonProperty("ChanFlg")
	@NotNull
	@NotEmpty
	@Length(max = 6)
	@DicType(dicType = ChannelNo.class, method = "getValue")
	private String ChanFlg;	//渠道
	
	@BeanMapKey("ProdCd")
	@JsonProperty("ProdCd")
	@NotNull
	@NotEmpty
	@Length(max = 32)
	@DicType(dicType = PrdInfoConstant.PrdCode.class, method = "getKey")
	private String ProdCd;	//产品编号
	
	@BeanMapKey("AdjAmtTp")
	@JsonProperty("AdjAmtTp")
	@NotNull
	@NotEmpty
	@Length(max = 5)
	@DicType(dicType = BdAdjustType.class, method = "getValue")
	private String AdjAmtTp;	//调额类型

	@BeanMapKey("AdjMd")
	@JsonProperty("AdjMd")
	@NotNull
	@NotEmpty
	@Length(max = 10)
	@DicType(dicType = AdjustMode.class, method = "getValue")
	private String AdjMd;	//调整方式
	
	@BeanMapKey("PrimAppTm")
	@JsonProperty("PrimAppTm")
	@Length(max = 14) 
	private String PrimAppTm;	//首次用信时间
	
	@BeanMapKey("IDCertNo")
	@JsonProperty("IDCertNo")
	@NotNull
	@NotEmpty
	@Length(max = 32)
	private String IDCertNo;	//身份证号
	
	@BeanMapKey("AgeCnt")
	@JsonProperty("AgeCnt")
	@NotNull
	@NotEmpty
	@Length(max = 3)
	@NumType
	private String AgeCnt;	//年龄
	
	@BeanMapKey("HighEdu")
	@JsonProperty("HighEdu")
	@Length(max = 50)
	@DicType(dicType = Education.class, method = "getValue")
	private String HighEdu;	//学历

	@BeanMapKey("BDPostLoanLvl")
	@JsonProperty("BDPostLoanLvl")
	@NotNull
	@NotEmpty
	@Length(max = 10)
	private String BDPostLoanLvl;	//贷中人群分层

	@BeanMapKey("BDPreLoanLvl")
	@JsonProperty("BDPreLoanLvl")
	@Length(max = 10)
	@DicType(dicType = BdPreaCustSeg.class, method = "getValue")
	private String BDPreLoanLvl;	//贷前人群分层

	@BeanMapKey("AdjRsnCd")
	@JsonProperty("AdjRsnCd")
	@NotNull
	@NotEmpty
	@Length(max = 32)
	@DicType(dicType = LoanReasonCode.class, method = "getValue")
	private String AdjRsnCd;	//调额原因

	@BeanMapKey("BlklistTp")
	@JsonProperty("BlklistTp")
	@Length(max = 10)
	@DicType(dicType = BdBlackListType.class, method = "getValue")
	private String BlklistTp;	//黑名单类型

	@BeanMapKey("RqsTmstmp")
	@JsonProperty("RqsTmstmp")
	@NotNull
	@NotEmpty
	@Length(max = 20) 
	private String RqsTmstmp;	//请求时间

	@BeanMapKey("AdjAfterAmt")
	@JsonProperty("AdjAfterAmt")
	@NotNull
	@NotEmpty
	@Length(min = 2,max = 16)
	@NumType
	private String AdjAfterAmt;	//调额后额度

	@BeanMapKey("AdjPreAmt")
	@JsonProperty("AdjPreAmt")
	@NotNull
	@NotEmpty
	@Length(min = 2,max = 16)
	@NumType
	private String AdjPreAmt;	//调额前额度

	@BeanMapKey("BDIdCertScr")
	@JsonProperty("BDIdCertScr")
	@Length(max = 10)
	@NumType
	private String BDIdCertScr;	// 百度身份证评分（内部多头分（身份证））

	@BeanMapKey("BDBScr")
	@JsonProperty("BDBScr")
	@NotNull
	@NotEmpty
	@Length(max = 10)
	private String BDBScr;	//度小满B模型分

	@BeanMapKey("AdjAmtIdNo")
	@JsonProperty("AdjAmtIdNo")
	@NotNull
	@NotEmpty
	@Length(max = 64)
	private String AdjAmtIdNo;	//调额Id号

	@BeanMapKey("CurrOvdueTerm")
	@JsonProperty("CurrOvdueTerm")
	@Length(max = 10)
	private String CurrOvdueTerm;	//当前逾期期数

	@BeanMapKey("UtlzRate")
	@JsonProperty("UtlzRate")
	@NumType
	private String UtlzRate;	//最近三个月额度利用率

	@BeanMapKey("BDMblNoScr")
	@JsonProperty("BDMblNoScr")
	@Length(max = 10)
	@NumType
	private String BDMblNoScr;	// 百度手机号评分 （内部多头分（手机））
	
	@BeanMapKey("BDAcctNoScr")
	@JsonProperty("BDAcctNoScr")
	@Length(max = 10)
	@NumType
	private String BDAcctNoScr;	// 百度账号评分 （内部多头分（百度帐号））

	public String getBaiduSnId() {
		return BaiduSnId;
	}

	public void setBaiduSnId(String baiduSnId) {
		BaiduSnId = baiduSnId;
	}

	public String getCrdtAppFlowNo() {
		return CrdtAppFlowNo;
	}

	public void setCrdtAppFlowNo(String crdtAppFlowNo) {
		CrdtAppFlowNo = crdtAppFlowNo;
	}
	
	public String getVerNo() {
		return VerNo;
	}

	public void setVerNo(String verNo) {
		VerNo = verNo;
	}

	public String getRepeatRqsBss() {
		return RepeatRqsBss;
	}

	public void setRepeatRqsBss(String repeatRqsBss) {
		RepeatRqsBss = repeatRqsBss;
	}

	public String getAdvType() {
		return AdvType;
	}

	public void setAdvType(String advType) {
		AdvType = advType;
	}

	public String getChanFlg() {
		return ChanFlg;
	}

	public void setChanFlg(String chanFlg) {
		ChanFlg = chanFlg;
	}

	public String getProdCd() {
		return ProdCd;
	}

	public void setProdCd(String prodCd) {
		ProdCd = prodCd;
	}

	public String getAdjAmtTp() {
		return AdjAmtTp;
	}

	public void setAdjAmtTp(String adjAmtTp) {
		AdjAmtTp = adjAmtTp;
	}

	public String getAdjMd() {
		return AdjMd;
	}

	public void setAdjMd(String adjMd) {
		AdjMd = adjMd;
	}

	public String getPrimAppTm() {
		return PrimAppTm;
	}

	public void setPrimAppTm(String primAppTm) {
		PrimAppTm = primAppTm;
	}

	public String getIDCertNo() {
		return IDCertNo;
	}

	public void setIDCertNo(String iDCertNo) {
		IDCertNo = iDCertNo;
	}

	public String getAgeCnt() {
		return AgeCnt;
	}

	public void setAgeCnt(String ageCnt) {
		AgeCnt = ageCnt;
	}

	public String getHighEdu() {
		return HighEdu;
	}

	public void setHighEdu(String highEdu) {
		HighEdu = highEdu;
	}

	public String getBDPostLoanLvl() {
		return BDPostLoanLvl;
	}

	public void setBDPostLoanLvl(String bDPostLoanLvl) {
		BDPostLoanLvl = bDPostLoanLvl;
	}

	public String getBDPreLoanLvl() {
		return BDPreLoanLvl;
	}

	public void setBDPreLoanLvl(String bDPreLoanLvl) {
		BDPreLoanLvl = bDPreLoanLvl;
	}

	public String getAdjRsnCd() {
		return AdjRsnCd;
	}

	public void setAdjRsnCd(String adjRsnCd) {
		AdjRsnCd = adjRsnCd;
	}

	public String getBlklistTp() {
		return BlklistTp;
	}

	public void setBlklistTp(String blklistTp) {
		BlklistTp = blklistTp;
	}

	public String getRqsTmstmp() {
		return RqsTmstmp;
	}

	public void setRqsTmstmp(String rqsTmstmp) {
		RqsTmstmp = rqsTmstmp;
	}

	public String getAdjAfterAmt() {
		return AdjAfterAmt;
	}

	public void setAdjAfterAmt(String adjAfterAmt) {
		AdjAfterAmt = adjAfterAmt;
	}

	public String getAdjPreAmt() {
		return AdjPreAmt;
	}

	public void setAdjPreAmt(String adjPreAmt) {
		AdjPreAmt = adjPreAmt;
	}

	public String getBDIdCertScr() {
		return BDIdCertScr;
	}

	public void setBDIdCertScr(String bDIdCertScr) {
		BDIdCertScr = bDIdCertScr;
	}

	public String getBDBScr() {
		return BDBScr;
	}

	public void setBDBScr(String bDBScr) {
		BDBScr = bDBScr;
	}

	public String getAdjAmtIdNo() {
		return AdjAmtIdNo;
	}

	public void setAdjAmtIdNo(String adjAmtIdNo) {
		AdjAmtIdNo = adjAmtIdNo;
	}

	public String getCurrOvdueTerm() {
		return CurrOvdueTerm;
	}

	public void setCurrOvdueTerm(String currOvdueTerm) {
		CurrOvdueTerm = currOvdueTerm;
	}

	public String getUtlzRate() {
		return UtlzRate;
	}

	public void setUtlzRate(String utlzRate) {
		UtlzRate = utlzRate;
	}

	public String getBDMblNoScr() {
		return BDMblNoScr;
	}

	public void setBDMblNoScr(String bDMblNoScr) {
		BDMblNoScr = bDMblNoScr;
	}

	public String getBDAcctNoScr() {
		return BDAcctNoScr;
	}

	public void setBDAcctNoScr(String bDAcctNoScr) {
		BDAcctNoScr = bDAcctNoScr;
	}

}
